Most software applications have well defined functionality that is written directly into the source code of the software applications. As a result, the functionality of the software applications is fixed once the source code is compiled and the executable software applications are deployed. If the functionality of such a software application is to be changed or if new functionality is to be added to the software application, the software application source code must be modified to incorporate the functionality changes or additions. Once modified, the source code must be re-compiled and the executable software application re-deployed. As will be appreciated, this makes the functionality of such a software application very rigid and almost impossible to change without considerable expense, once the software application source code has been compiled and the executable software application deployed. Also, modifying the source code to incorporate functionality changes or additions requires significant programming skill.
For example, drag and drop functionality in software applications is common and well known to those of skill in the art. Such functionality is typically implemented in the software application source code. The software application source code defines the types of resource objects that the software application will accept as valid drag and drop inputs and inhibits undefined and thus invalid, resource objects from being accepted. The resource object type definitions apply to the entire software application. The software application source code includes software routines compiled into libraries that handle the resource objects when they are dragged and dropped on the software application. Unfortunately, once the software application source code has been compiled and the executable software application deployed, the behavior of the software application is fixed and the drag and drop handling routines cannot be changed. New valid drag and drop resource objects cannot be defined unless the software application source code is modified and recompiled as discussed above. Similarly existing drag and drop resource objects cannot be changed to invalid drag and drop resource objects without modifying and recompiling the software application source code. The end result is a very static software application.
The above rigidity in software applications poses other problems. For example, software applications are generally targeted at well known groups of end users whose needs are believed to be mostly known when the software applications are being designed. If end users have different needs, then typically only functionality that is common to all end users is implemented. The end result is software applications that lack functionality desired by many end users and that lack variability in functionality.
This inflexibility in functionality is particularly problematic in application content authoring and presentation environments. Content features need to be more dynamic than software application features as content features must suit the needs of each individual piece of content rather than applying globally to a user base. In other words, content features are targeted at individual pieces of content within a software application rather than at the end users. Notwithstanding the above, typically when a new content feature is conceived, it is judged based on user demand and implemented based on the lowest common denominator of functionality. Content features that do not appeal to a large group are usually not implemented. Content features that are implemented unfortunately require rewriting and recompiling of the software application source code as described above. The end result is rigid and simplified content features.
As will be appreciated, there is exists a need for programming flexibility especially at the content level. It is therefore an object of the present invention to provide a novel method of enhancing software application features and novel content objects.